home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6-1 / Night Owl's Shareware - PDSI-006-1 - Night Owl Corp (1992).iso / 033a / mfm_109b.arj / SAVEKILL.PAS < prev    next >
Pascal/Delphi Source File  |  1991-06-20  |  3KB  |  111 lines

  1. {========================================================================}
  2. Function SizeOfFilesBbs(FileArea : String) : LongInt;
  3.   Var
  4.     FilesBbs : File Of Byte;
  5.     SizeOfFile : LongInt;
  6.   Begin
  7.     Assign(FilesBbs,FileArea+'FILES.BBS');
  8.     {$I-} Reset(FilesBbs); {$I+}
  9.     If IOresult = 0 Then
  10.     Begin
  11.       SizeOfFilesBbs := FileSize(FilesBbs);
  12.       Close(FilesBbs);
  13.     End
  14.     Else
  15.     Begin
  16.       SizeOfFilesBbs := 0;
  17.     End;
  18.   End;
  19. {========================================================================}
  20. Function InMainList(TempEntry : ListPtr) : Boolean;
  21.   Begin
  22.     NextPrintEntry := FirstEntry; InMainList := False;
  23.     While NextPrintEntry^.NextEntry <> NIL Do
  24.     Begin
  25.       If NextPrintEntry^.FileName = TempEntry^.FileName Then InMainList := True;
  26.       NextPrintEntry := NextPrintEntry^.NextEntry;
  27.     End;
  28.   End;
  29. {========================================================================}
  30. Procedure EraseKillList;
  31.   Var
  32.     FileToErase : File;
  33.   Begin
  34.     While KillEntry <> NIL Do
  35.     Begin
  36.       FindFirst(FileAreaPath+KillEntry^.FileName,Archive,DirInfo);
  37.       If DosError = 0 Then
  38.       Begin
  39.         If (Not InMainList(KillEntry)) Then
  40.         Begin
  41.           If UpperString(KillEntry^.FileName) <> 'FILES.BBS' Then
  42.           Begin
  43.             Assign(FileToErase,FileAreaPath+KillEntry^.FileName);
  44.             Erase(FileToErase);
  45.           End;
  46.         End;
  47.       End;
  48.       OldEntry := KillEntry;
  49.       If KillEntry^.PrevEntry = KillEntry Then
  50.       Begin
  51.         Dispose(KillEntry);
  52.         KillEntry := NIL;
  53.       End
  54.       Else
  55.       Begin
  56.         KillEntry^.PrevEntry^.NextEntry := KillEntry^.NextEntry;
  57.         KillEntry^.NextEntry^.PrevEntry := KillEntry^.PrevEntry;
  58.         KillEntry := KillEntry^.NextEntry;
  59.       End;
  60.       If KillEntry <> NIL Then Dispose(OldEntry);
  61.     End;
  62.   End;
  63. {========================================================================}
  64. Procedure SaveList;
  65.   Var
  66.     Slc : Char;
  67.   Begin
  68.     AnsiGotoXY(25,1); AnsiClearToEOL;
  69.     Write('This will DELETE killed files and update FILES.BBS, Are you sure? ');
  70.     Repeat
  71.       Gbx := GetInput;
  72.       Slc := Upcase(Chr(Gbx));
  73.     Until Slc In ['N','Y'];
  74.     Write(Slc);
  75.     If Slc = 'Y' Then
  76.     Begin
  77.       Assign(FileList,FileAreaPath+'FILES.BBS');
  78.       {$I-} ReWrite(FileList); {$I+}
  79.       If IOresult = 0 Then
  80.       Begin
  81.         NextPrintEntry := FirstEntry;
  82.         While NextPrintEntry^.NextEntry <> NIL Do
  83.         Begin
  84.           If NextPrintEntry^.TypeOfRecord <> Orphan Then
  85.           Begin
  86.             If NextPrintEntry^.TypeOfRecord <> Comment Then
  87.             Begin
  88.               Write(FileList,NextPrintEntry^.FileName);
  89.               Write(FileList,Copy('         ',1,13-Length(NextPrintEntry^.FileName))+' ');
  90.             End;
  91.             WriteLn(FileList,NextPrintEntry^.Description);
  92.           End;
  93.           NextPrintEntry := NextPrintEntry^.NextEntry;
  94.         End;
  95.         If NextPrintEntry^.TypeOfRecord <> Orphan Then
  96.         Begin
  97.           Write(FileList,NextPrintEntry^.FileName);
  98.           Write(FileList,' ');
  99.           WriteLn(FileList,NextPrintEntry^.Description);
  100.         End;
  101.         Close(FileList);
  102.         EraseKillList;
  103.         AnsiGotoXY(25,1); AnsiClearToEOL;
  104.       End;
  105.       Altered := False;
  106.     End
  107.     Else Write('N');
  108.     AnsiGotoXY(24,80);
  109.   End;
  110. {========================================================================}
  111.